<!--
@Time:2021/11/30 9:16
@File:article_detail.py
@Author:常雷
@Software:PyCharm
-->
{% extends 'base.html' %}
{% block css %}
    <style>
        #div_digg {
            float: right;
            margin-bottom: 10px;
            margin-right: 30px;
            font-size: 12px;
            width: 128px;
            text-align: center;
            margin-top: 10px;
        }

        .diggit {
            float: left;
            width: 46px;
            height: 52px;
            background: url(/static/img/upup.gif) no-repeat;
            text-align: center;
            cursor: pointer;
            margin-top: 2px;
            padding-top: 5px;
        }

        .buryit {
            float: right;
            margin-left: 20px;
            width: 46px;
            height: 52px;
            background: url(/static/img/downdown.gif) no-repeat;
            text-align: center;
            cursor: pointer;
            margin-top: 2px;
            padding-top: 5px;
        }

        .clear {
            clear: both;
        }
    </style>
{% endblock %}
{% block title %}
    <title>{{ article_obj.title }}</title>
{% endblock %}
{% block content %}
    <h1>{{ article_obj.title }}</h1>
    <div class="article_content">
        {{ article_obj.content|safe }}
    </div>
    {#    点赞点踩样式开始#}
    <div class="clearfix">
        <div id="div_digg">
            <div class="diggit action">
                <span class="diggnum" id="digg_count">{{ article_obj.up_num }}</span>
            </div>
            <div class="buryit action">
                <span class="burynum" id="bury_count">{{ article_obj.down_num }}</span>
            </div>
            <div class="clear"></div>
            <div class="diggword" id="digg_tips" style="color: red">
            </div>
        </div>
    </div>
    {#    点赞点踩样式结束#}
    {#  评论楼渲染开始  #}
    <div>
        <ul class="list-group">
            {% for comment in comment_list %}
                <li class="list-group-item">
                    <span>#{{ forloop.counter }}楼</span>
                    <span>{{ comment.comment_time|date:'Y-m-d H:i:s' }}</span>
                    <span style="color: #5bc0de">{{ comment.user.username }}</span>
                    <span><a class="pull-right reply" username="{{ comment.user.username }}" comment_id="{{ comment.pk }}">回复</a></span>
                    <div>
                        {# 判断当前评论是否是子评论 如果是需要渲染对应的评论人名 #}
                        {% if comment.parent_id %}
                            <p>@{{ comment.parent.user.username }}</p>
                        {% endif %}
                        {{ comment.content }}
                    </div>
                </li>
            {% endfor %}
        </ul>
    </div>
    {#  评论楼渲染结束  #}
    {#  文章评论框样式开始  #}
    {% if request.user.is_authenticated %}
        <div>
            <p><span class="glyphicon glyphicon-comment"></span>发表评论</p>
            <div>
                <textarea name="comment" id="id_comment" cols="60" rows="10"></textarea>
            </div>
            <button class="btn btn-primary" id="id_submit">提交评论</button>
            <span style="color: red" id="error"></span>
        </div>
    {% else %}
        <li><a href="{% url 'reg' %}}">注册</a></li>
        <li><a href="{% url 'login' %}">登录</a></li>
    {% endif %}

    {#  文章评论框样式结束  #}
{% endblock %}
{% block js %}
    <script>
        // 给所有的action类绑定事件
        $('.action').click(function () {
            {#alert($(this).hasClass('diggit'))#}
            let isUp = $(this).hasClass('diggit');
            // 保存div
            let $div = $(this);
            // 朝后端发送ajax请求
            $.ajax({
                url: '/up_or_down/',
                type: 'post',
                data: {
                    // 是哪个用户-后端校验
                    // 哪篇文章
                    'article_id': '{{ article_obj.pk }}',
                    // 赞还是踩
                    'is_up': isUp,
                    'csrfmiddlewaretoken': '{{ csrf_token }}'
                },
                success: function (args) {
                    if (args.code == 1000) {
                        $('#digg_tips').text(args.msg)
                        // 刷新数字 前端数字加一
                        // 先获取到之前的数字
                        let oldNum = $div.children().text()
                        $div.children().text(Number(oldNum) + 1)
                    } else {
                        $('#digg_tips').html(args.msg)
                    }
                }
            })
        });

        //设置一个全局的parentID字段
        let parentId = null;
        //用户点击评论按钮朝后端发送ajax请求
        $('#id_submit').click(function () {
            //获取用户评论内容
            let conTent=$('#id_comment').val();
            //判断当前评论是否是子评论如果是需要将我们之前手动渲染的@username\n去除
            if (parentId){
                //截取字段 找到\n对应的索引 利用切片 但是前片顾头不顾尾所以索引+1
                let indexNum = conTent.indexOf('\n') + 1;
                conTent = conTent.slice(indexNum)   //该方法将indexNum之前的所有数据切除
            }

            $.ajax({
                url:'/comment/',
                type: 'post',

                data: {
                    'article_id':'{{ article_obj.pk }}',
                    'content':conTent,
                    'parent_id':parentId,
                    'csrfmiddlewaretoken':'{{ csrf_token }}'
                },
                success:function (args) {
                    if (args.code==1000){
                        $('#error').text(args.msg);
                        //将评论框里面的内容清空
                        $('#id_comment').val('');
                        //临时渲染评论楼
                        let userName = '{{ request.user.username }}';
                        let temp = `
                            <li class="list-group-item">
                                <span><span class="glyphicon glyphicon-comment"></span>${userName}:</span>
                                <span><a href="" class="pull-right">刷新页面</a></span>
                                <div>
                                    ${ conTent }
                                </div>
                            </li>
                        `;
                        //将生成好的标签添加到ul标签内
                        $('.list-group').append(temp);
                        // 重置回复索引主键-清空parentId
                        parentId = null;
                    }
                }
            })
        });
    // 给回复按钮绑定点击事件
    $('.reply').click(function () {
        //需要评论对应的昵称,主键值
        //获取用户名
        let commentUserName = $(this).attr('username');
        //获取主键值 直接修改全局的变量
        parentId = $(this).attr('comment_id');
        // 拼接信息塞给评论框    focus()聚焦
        $('#id_comment').val('@' + commentUserName + '\n').focus()
    })
    </script>
{% endblock %}